package com.ruoyi.project.system.controller;

import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.domain.Question;
import com.ruoyi.project.system.domain.SysDoctor;
import com.ruoyi.project.system.mapper.QuestionMapper;
import com.ruoyi.project.system.service.ISysDoctorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 科室问卷前端控制器
 */
@RestController
@RequestMapping("/department-questionnaire")
public class DepartmentQuestionnaireController extends BaseController { // 继承 BaseController

    @Autowired
    private QuestionMapper questionMapper;

    @Autowired
    private ISysDoctorService sysDoctorService;

    /**
     * 获取当前登录医生所在科室的问卷问题
     */
    @GetMapping("/current")
    public AjaxResult getCurrentDepartmentQuestions() {
        try {
            // 1. 获取当前登录用户的 userId
            Long userId = SecurityUtils.getUserId();

            // 2. 使用 userId 查询对应的 SysDoctor 信息
            SysDoctor doctor = sysDoctorService.getDoctorInfoByUserId(userId);

            // 3. 检查医生信息和科室ID是否存在
            if (doctor == null) {
                // 使用 AjaxResult.error 返回错误信息
                return AjaxResult.error("未找到当前用户关联的医生信息。");
            }
            if (doctor.getDepartmentId() == null) {
                return AjaxResult.error("当前医生未分配科室，无法获取问卷。");
            }

            // 4. 从 SysDoctor 对象中获取 departmentId
            Integer departmentId = doctor.getDepartmentId();

            // 5. 根据 departmentId 查询问卷问题
            List<String> questions = questionMapper.selectQuestionByDeptId(departmentId.longValue());

            // 6. 使用 AjaxResult.success 返回成功结果，数据放在 data 字段中
            return AjaxResult.success(questions);

        } catch (Exception e) {
            e.printStackTrace();
            // 捕获所有异常，返回统一的错误提示
            return AjaxResult.error("获取科室问卷失败，请联系管理员。");
        }
    }
}